Many types of computer systems utilize a basic input/output system (“BIOS”), or an extensible firmware interface (“EFI”) firmware, to control various aspects of the computer system. In particular, the BIOS is utilized to perform a power on self-test, to initialize the various hardware components within the computer system, and to provide an interface between an operating system executing on the computer system and the hardware. In many computer systems the BIOS also provides a setup utility program through which a user may configure various aspects of the operation of the computer system.
BIOS setup utilities typically rely on a keyboard input device for receiving user input. However, many types of computers are not equipped with a keyboard input device. For instance, some server computers may not be equipped with a keyboard. Similarly, modern pen-based computers typically do not include a keyboard and instead rely primarily on a pen and touchscreen for receiving user input. Other computers may be purposely equipped with a mouse input device but no keyboard.
Some parameters settable within a BIOS setup utility are presented to the user as multiple choice menu selections. Because these parameters are presented within a menu, they can easily be specified using only a mouse or pen-based input device. However, some parameters within typical BIOS setup utilities require the entry of alpha-numeric characters (e.g. A-Z, 0-9) or other types of keystrokes (an “enter” key for example). For instance, it may be necessary to set a password within the BIOS setup utility. Entering alpha-numeric characters without the use of a keyboard requires a special user interface configured for this type of input.
One way that BIOS designers have enabled keystroke input in a BIOS setup utility without the use of a keyboard is through the use of a virtual on-screen keyboard. In these previous solutions, a matrix of selectable characters is displayed on screen. A user may then utilize a mouse or pen to select one of the keys to be entered. These types of virtual on-screen keyboards have usually been implemented utilizing a table stored in the BIOS that defines each character in the virtual on-screen keyboard and the coordinates of the on-screen location at which the character is displayed. When input is received from the pen or mouse at a particular on-screen location, the table is consulted to determine if a character is defined within the table at the selected on-screen location. If a character is defined in the table at the selected on-screen location, the character is deemed to have been entered.
While prior art methods that utilize a character table for determining input keystrokes perform reasonably well, the character table utilized by these previous systems requires a considerable amount of storage space within the typically small capacity electrically erasable and programmable read only memory (“EEPROM”) device utilized to store the firmware. Moreover, the character table must be synchronized exactly with the on-screen display. Each time the on-screen display is changed, the table must be updated to reflect the change. This can be an arduous and time consuming process for a BIOS programmer. Accordingly, there is a need for a method, system, and apparatus for receiving keystroke input in the absence of a keyboard input device that does not utilize a table for storing character locations and therefore utilizes significantly less memory than prior art methods and that does not require synchronization of a table with an on screen display.
It is with respect to these considerations and others that the present invention has been made.